package admin

// ToolDBConnectionRow 数据库连接列表项
type ToolDBConnectionRow struct {
	ID        string `json:"id"`
	Name      string `json:"name"`
	Host      string `json:"host"`
	Port      int    `json:"port"`
	Username  string `json:"username"`
	DBName    string `json:"db_name"`
	SSLMode   string `json:"ssl_mode"`
	Timezone  string `json:"timezone"`
	IsEnabled bool   `json:"is_enabled"`
	IsDefault bool   `json:"is_default"`
	CreatedAt int64  `json:"created_at"`
	UpdatedAt int64  `json:"updated_at"`
}

// ToolDBConnectionDetail 数据库连接详情
type ToolDBConnectionDetail struct {
	ID        string `json:"id"`
	Name      string `json:"name"`
	Host      string `json:"host"`
	Port      int    `json:"port"`
	Username  string `json:"username"`
	Password  string `json:"password"` // 编辑时使用，但不返回实际密码
	DBName    string `json:"db_name"`
	SSLMode   string `json:"ssl_mode"`
	Timezone  string `json:"timezone"`
	IsEnabled bool   `json:"is_enabled"`
	IsDefault bool   `json:"is_default"`
	CreatedAt int64  `json:"created_at"`
	UpdatedAt int64  `json:"updated_at"`
}

// CreateToolDBConnectionRequest 创建数据库连接请求
type CreateToolDBConnectionRequest struct {
	Name      string `json:"name" validate:"required,min=1,max=100"`
	Host      string `json:"host" validate:"required,min=1,max=255"`
	Port      int    `json:"port" validate:"required,min=1,max=65535"`
	Username  string `json:"username" validate:"required,min=1,max=100"`
	Password  string `json:"password" validate:"required,min=1,max=255"`
	DBName    string `json:"db_name" validate:"required,min=1,max=100"`
	SSLMode   string `json:"ssl_mode" validate:"omitempty,oneof=disable require verify-ca verify-full"`
	Timezone  string `json:"timezone" validate:"omitempty,min=1,max=50"`
	IsEnabled bool   `json:"is_enabled"`
	IsDefault bool   `json:"is_default"`
}

// CreateToolDBConnectionResponse 创建数据库连接响应
type CreateToolDBConnectionResponse struct {
	ID        string `json:"id"`
	Name      string `json:"name"`
	Host      string `json:"host"`
	Port      int    `json:"port"`
	Username  string `json:"username"`
	DBName    string `json:"db_name"`
	IsEnabled bool   `json:"is_enabled"`
	IsDefault bool   `json:"is_default"`
}

// UpdateToolDBConnectionRequest 更新数据库连接请求
type UpdateToolDBConnectionRequest struct {
	Name      *string `json:"name" validate:"omitempty,min=1,max=100"`
	Host      *string `json:"host" validate:"omitempty,min=1,max=255"`
	Port      *int    `json:"port" validate:"omitempty,min=1,max=65535"`
	Username  *string `json:"username" validate:"omitempty,min=1,max=100"`
	Password  *string `json:"password" validate:"omitempty,min=1,max=255"`
	DBName    *string `json:"db_name" validate:"omitempty,min=1,max=100"`
	SSLMode   *string `json:"ssl_mode" validate:"omitempty,oneof=disable require verify-ca verify-full"`
	Timezone  *string `json:"timezone" validate:"omitempty,min=1,max=50"`
	IsEnabled *bool   `json:"is_enabled"`
	IsDefault *bool   `json:"is_default"`
}
